Typical storage devices (e.g., hard disk drives, network drives, etc.) are accessed by operating systems through a linear block-level interface. This interface abstracts away the specifics of the underlying storage device and often consolidates storage from multiple storages devices such as Redundant Arrays of Inexpensive Disks (RAID). While the interface simplifies access to the storage devices, it hides certain aspects of the storage devices such as parallelism.
Solid State Devices (SSDs) are becoming a popular alternative to conventional hard disk drives. SSDs differ from conventional hard disk drives in several ways. For example, SSDs have semiconductor properties, have no moving parts, and have inherent parallelism. However, despite these differences, SSDs are used similarly to traditional hard disk drives by exporting the linear address space of the flash packages that make up the SSDs. While this interface method ensures compatibility, it hides the inherent parallelism of SSDs from the operating system.